package test

import (
	"encoding/json"
	"io/ioutil"
	"log"
	"os"
	"time"

	"github.com/gogf/gf/database/gredis"
)

// Setting 设置
type Setting struct {
	Host             string `json:"host"`
	Port             string `json:"port"`
	WorkerPoolSize   uint32 `json:"workerpoolsize"`
	MaxWorkerTaskLen uint32 `json:"maxworkertasklen"`
	WebDomain        string `json:"webdomain"`
	WebTaskName      string `json:"webtaskname"`
	WebTaskAppNumber string `json:"webtaskappnumber"`
	//Redis
	RedisConfig gredis.Config `json:"redisConfig"`
	//消息同步 是否按微信id 发布消息
	NewsSynWxId     bool   `json:"newsSynWxId"`
	Dt              bool   `json:"dt"`
	MysqlConnectStr string `json:"mySqlConnectStr"`
	//队例名
	Topic string `json:"topic"`
	//rocketMq是否开启
	RocketMq bool `json:"rocketMq"`
	//rocketMq地址
	RocketMqHost string `json:"rocketMqHost"`
	//rm key
	RocketAccessKey string `json:"rocketAccessKey"`
	RocketSecretKey string `json:"rocketSecretKey"`
	//rabbitMq是否开启
	RabbitMq bool `json:"rabbitMq"`
	//rabbitMqUrl 的url包含账号密码
	RabbitMqUrl string `json:"rabbitMqUrl"`
	//kafka是否开启
	Kafka         bool   `json:"kafka"`
	KafkaUrl      string `json:"kafkaUrl"`
	KafkaUsername string `json:"kafkaUsername"`
	KafkaPassword string `json:"kafkaPassword"`
	// 当前服务器外网IP地址
	TargetIp string
}

var GlobalSetting Setting

func ConfigSetUp() {
	workdir, err := os.Getwd()
	if err != nil {
		log.Panicln(err)
		return
	}

	dat, err := ioutil.ReadFile(workdir + "/test/assets/setting.json")
	err = json.Unmarshal(dat, &GlobalSetting)
	if err != nil {
		log.Panicln(err)
		return
	}
	GlobalSetting.RedisConfig.IdleTimeout *= time.Second
	GlobalSetting.RedisConfig.MaxConnLifetime *= time.Second
	GlobalSetting.RedisConfig.ConnectTimeout *= time.Second
}
